package gitbucket.core.api

import gitbucket.core.model.IssueComment
import gitbucket.core.util.RepositoryName

import java.util.Date

/**
 * https://developer.github.com/v3/issues/comments/
 */
case class ApiComment(id: Int, user: ApiUser, body: String, created_at: Date, updated_at: Date)(
  repositoryName: RepositoryName,
  issueId: Int,
  isPullRequest: Boolean
) {
  val html_url = ApiPath(
    s"/${repositoryName.fullName}/${if (isPullRequest) { "pull" }
      else { "issues" }}/${issueId}#comment-${id}"
  )
}

object ApiComment {
  def apply(
    comment: IssueComment,
    repositoryName: RepositoryName,
    issueId: Int,
    user: ApiUser,
    isPullRequest: Boolean
  ): ApiComment =
    ApiComment(
      id = comment.commentId,
      user = user,
      body = comment.content,
      created_at = comment.registeredDate,
      updated_at = comment.updatedDate
    )(repositoryName, issueId, isPullRequest)
}
